﻿package juego.naves.componentes {
	
	import juego.naves.*;
	import motor.grafico.*;
	import flash.events.*;
	
	import motor.colision.*;
	
	public class ComponenteNave extends Nave
	{
		
		public function ComponenteNave(xx:Number, yy:Number, unNombre:String, tipoGrupo:int)
		{
			super (xx,yy,unNombre,tipoGrupo);
		}
		
		/*override protected function crearCuerpo(xx:Number, yy:Number, velX:Number, velY:Number,ancho:Number, alto:Number):Cuerpo
		{
			return null;//Los coponentens deben tener un cuerpo q no genere colisiones.
		}*/
		
		override protected function crearGrafico():Grafico
		{
			return Graficos.getInstancia().crearGraficoArmaPrueba();
		}
		
		override protected function armarComponentesBasicos ()
		{
			//HAY Q SOBRE ESCRIBIRLA Y DEJARLA EN VACIO O CREA UN BUCLE !
		}
		
		override public function calcularEfectoColision (e:Event)
		{
			//SI UN ARMA Q ES UN OBSERVER ES DESTRUIDO SIN Q LO SEPA EL PADRE, HARA Q PADRE LO VUELVA A INVOCAR
			//ESTANDO ESTE MUERTO.
			return;
		}
		
		override public function update (nuevoEstado:int, posX:Number, posY:Number, vx:Number, vy:Number)
		{
			super.update (nuevoEstado,posX,posY,vx,vy);
			
			updateEstado1(nuevoEstado); 
			//TECNICAMENTE CON ESTO SERIA SUFICIENTE PARA Q X,Y,VX,VY SE ACTUALICEN DE IGUAL MANERA Q EL OBSERVADO.
			trace ("ComponenteNave UPDATE = " + nuevoEstado);
		}
		
		
		override protected function dispararArmaPrincipal()
		{
			//TODO: La nave en si solo podria actualizar algun registro o alguna animacion,
			//recien el Objeto arma es quien realizara el disparo (quien sera un componente observer de la nave);
			
			trace ("ComponenteArma . dispararArmarPrincipal BOOM!");
		}
	}
	
}